/*
 * @Description:  
 * @Author: ~光~~
 * @Date: 2024-10-17 21:29:11
 * @LastEditTime: 2024-10-21 11:26:45
 * @LastEditors:  
 */
初始化通过yaml文件读写

while(true){
    判断是否读完了数据 或者到达文件底部
        
    预积分列表添加当前imu值
    更新imu列表   
    if(当前imu时间>标记时间sow){
        //gnss相关数据处理
        if(检查GNSS数据的时间与当前时间标记（sow）之间的差是否小于一个最小时间间隔(MINIMUM_INTERVAL)){
            读取gnss数据
            获取下一个gnss数据
            
            抗差：利用std忽略误差大的gnss 数据
            if(是否启用了gnss 中断){
                处理更新下一个中断时间点
            }
            
            更新gnss新的重力值
            更新gnss坐标转换
            if(gnssfile读到结尾 ) gnss时间设为0（表示没有			更多的数据
        }

       //imu内插处理
        判断是否需要内插，进行内插处理
       //更新下一个积分节点
          timelist.push_back(sow);
          sow += INTEGRATION_LENGTH;   
        //当前整秒状态加入到滑窗
         state_curr：从预积分列表（preintegrationlist）中获取当前的状态，并将其存储到滑动窗口的状态列表（statelist）和状态数据列表（statedatalist）中。
             
        //##构建优化问题
		 1.创建ceres求解器：配置各种参数
         2.添加参数块 位姿更新
         for(size_t k = 0; k <= preintegrationlist.size(); k++){
             ceres::Manifold *manifold = new PoseManifold();
             添加需要优化的位姿参数
             添加其他与IMU相关混合的参数 如传感器偏差
         }

        3.构建gnss因子
         int index=0;
         使用huber作为代价函数
         std::vector<std::pair<double, ceres::ResidualBlockId>>            gnss_residualblock_id;//创建一个gnss残差_ID
          for(遍历gnsslist所有的gnss){
              创建一个factor指针
              for(遍历预积分里所有的对象){
                  使用problem.AddResidualBlock() 函数将 GNSS 残差块添				   加到优化问题中，并获取该残差块的 ResidualBlockId
                      
                  将 GNSS 数据点的时间戳和对应的 ResidualBlockId 组合成                 一个std::pair，然后存入 gnss_residualblock_id 向量中。
              }
          }
        4.创建预积分因子
        5.构建IMU因子
            //ImuErrorFactor：这个因子主要用于描述IMU传感器的偏置误差。
            //在IMU数据中，偏置误差会累积，导致估计值逐渐偏离真实值，因此需             要通过优化进行校正。
        6.边缘化因子
      //##求解最小二乘问题
         if(进行粗差检验 && gnss残差块id是空的){
             gnss卡方异常值检验
         	从优化问题中移除指定的ID残差块
         	创建一个新的GNSS因子对象：
                 重新将gnss因子添加到图优化问题中，不再用损失函数处理异常值  
         }
       //重新进行解算
          options.max_num_iterations = num_iterations * 3 / 4;
          solver.Solve(options, &problem, &summary);
       //输出解算进度    
       //##构建优化问题结束
        if(preintegrationlist 的大小== windows（窗口大小）){
            1.创建边缘化信息对象
            2.添加边缘化因子
            3.添加IMU预积分残差
        }else{
            
        }
    }
    
}